package com.android.rdc.librarysystem.API.net;

import android.content.Context;

import com.android.rdc.librarysystem.bean.Book;
import com.android.rdc.librarysystem.bean.Rank;

import java.util.List;

import io.reactivex.Observable;

/**
 * 2020/6/7 19:31
 * author: red
 * desc: BaseModel 进行通讯的接口在此处进行配置，这个类结合APIService一起看就行。
 * 我们的程序里主要用了几个东西，一个是Retrofit  主要用来处理HTTP请求的
 * 还有RxJava(Observable) 是观察者模式，主要用来辅助进行通信的调用，返回的处理的
 *  然后再SericeFatocy是写了访问的服务端的地址，其他的文件都是起辅助作用的，从别的地方拷贝过来不需要修改
 */
public class BaseModel {

    //借书的原理就是把书的名字发送到服务端去，服务端操作数据库，每次借了一本书，就把这本书的借书次数增加1
    //然后获取排行榜的时候，就是去获取去书的列表按照借书次数来一个 order by desc 倒序排序，返回列表就OK了
    public Observable<Book> borrow(Context context, Book book) {
        return ServiceFactory.getServiceFactory()
                .getApiService(context)
                .borrow(book)
                .compose(RxHelper.<Book>handleResult());
    }

    //查询排行榜列表
    public Observable<List<Rank>> rank(Context context) {
        return ServiceFactory.getServiceFactory()
                .getApiService(context)
                .rank()
                .compose(RxHelper.<List<Rank>>handleResult());
    }

}
